package org.example.com.editor.command.workspaceCommand;

import org.example.com.editor.command.Command;
import org.example.com.editor.ui.ConsoleUI;
import org.example.com.editor.workspace.Workspace;

import java.io.IOException;
import java.util.List;

public class EditorListCommand implements Command {

    @Override
    public void execute(Workspace workspace, ConsoleUI ui) {
        // 1. 参数校验
        String[] args = ui.getCommandArgs();
        if (args.length > 1) {
            ui.printError("用法：editor-list（无参数）");
            return;
        }

        // 2. 从 Workspace 获取已打开文件列表
        List<String> openedFiles = workspace.getOpenedFiles();
        String activeFile = workspace.getActiveFile();

        // 3. 处理空列表情况
        if (openedFiles.isEmpty()) {
            ui.printInfo("工作区无已打开的文件");
            return;
        }
        // 4. 打印文件列表（标记当前活跃文件，如用 * 标识）
        ui.printInfo("已打开的文件（* 表示当前活跃文件）：");
        for (String filePath : openedFiles) {
            String prefix = filePath.equals(activeFile) ? "* " : "  ";
            String suffix = null;
            try {
                suffix = workspace.isFileModified(filePath) ? "[modified]" : " ";
            } catch (IOException e) {
                ui.printError("无法获取文件状态：" + e.getMessage());
            }
            ui.printInfo(prefix + filePath + suffix);
        }
    }

    @Override
    public String getName() {
        return "editor-list";
    }
}